package com.aaa.service;

import com.aaa.mapper.TenementCompanyMapper;
import com.aaa.query.TenementCompanyQuery;
import com.aaa.result.Result;
import com.aaa.entity.TenementCompany;
import com.aaa.until.GFSStringUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author ${author}
 * @since 2021-01-19
 */
@Service
public class TenementCompanyServiceImpl extends ServiceImpl<TenementCompanyMapper, TenementCompany> implements ITenementCompanyService {

    @Autowired
    TenementCompanyMapper mapper;


    /**
     * create by: 刘涛
     * description: 模糊查询+分页+查询
     * create time: 2021/1/29 16:27
     *
     * @Param: null
     * @return Result
     */
    @Override
    public Result listAll(TenementCompanyQuery query) {
        //创建QueryWrapper对象
        QueryWrapper<TenementCompany> wrapper = new QueryWrapper<>();
        //传入查询条件     判断传入的参数是否为空                            列名              值
        wrapper.like(GFSStringUtil.isNull(query.getCompanyName()),"c_name",query.getCompanyName());
        //查询状态为1的数据    状态列为逻辑删除状态，删除为0，未删除为1
        wrapper.eq("c_status","1");
        //创建分页对象
        Page<TenementCompany> infoPage = new Page<>(query.getPage(),query.getCount());
        //调用MP自带方法分页模糊查询
        Page<TenementCompany> tenementCompanyPage = mapper.selectPage(infoPage, wrapper);
        //判断查询结果是否为空
       //判断tenementCompanyPage中查询结果数组的大小，来确定查询内容是否为空
        if (tenementCompanyPage.getRecords().size()>0){
            return Result.success(tenementCompanyPage);
        }
        if (tenementCompanyPage.getRecords().size()==0){
            return Result.error("查无此单位");
        }
        return Result.error("查询失败");

    }
/**
 * create by: 刘涛
 * description: 租户管理-企业表添加业务
 * create time: 2021/1/30 20:22
 *
  * @Param: null
 * @return
 */

    @Override
    @Transactional
    public Result add(TenementCompany tenementCompany) {
         //先去数据库查看是否有重复名称的
        //创建QueryWrapper对象
        QueryWrapper<TenementCompany> wrapper = new QueryWrapper<>();
        //传入查询条件     判断传入的参数是否为空                             列名              值
        wrapper.like(GFSStringUtil.isNull(tenementCompany.getCName()),"c_name",tenementCompany.getCName());
        //根据名称查询
        TenementCompany selectOne = mapper.selectOne(wrapper);
        //判断查询结果是否为空
        if (selectOne==null){
            //如果不为空，则执行添加操作
            int insert = mapper.insert(tenementCompany);
            //根据执行条数判断是否添加成功
            if (insert>0){
                return Result.success("添加成功");
            }
        // 如果查询不为空，返回错误信息"该租户户已存在"
        }else {
            return Result.error("该企业租户已存在");
        }
        //兜底返回
        return Result.error("添加失败");
    }

    /**
     * create by: 刘涛
     * description: 租户管理-企业表删除
     * create time: 2021/2/20 9:29
     *
      * @Param: null
     * @return
     */

    @Override
    @Transactional
    public Result del(TenementCompany tenementCompany){
        //根据id查询数据
        TenementCompany Company = mapper.selectById(tenementCompany.getCId());
        //更改实体类中状态属性
        Company.setCStatus("0");
        //逻辑删除，修改状态，使其不显示，根据id修改
        int i = mapper.updateById(Company);
        if (i>0){
            return Result.success("删除成功");
        }
        return Result.error("删除失败");
    }

    /**
     * create by: 刘涛
     * description: 租户管理-企业表修改
     * create time: 2021/2/24 15:02
     *
     * @Param: null
     * @return
     */
    @Override
    @Transactional
    public Result updateCompany(TenementCompany tenementCompany) {
        //根据id查询数据，如果此数据存在，执行修改操作
        TenementCompany company = mapper.selectById(tenementCompany.getCId());
        //判断数据是否存在，如果不存在，执行操作
        if (company.getCStatus().equals("0")) {
            return Result.error("该企业租户不存在");
        }
        //如果存在，执行修改操作，根据id修改
        int i = mapper.updateById(tenementCompany);
        if (i > 0) {
            return Result.success("修改成功");
        }
        return Result.error("修改失败");
    }



}
